const user = require('../models/model/user');
const { addUserinfo } = require('./userinfo');
const md5 = require('md5');

// md5用于用户注册单向加密

/**
 * 用户注册，添加用户 
 * 同时应该同时添加对应的用户信息用户信息的name为username
 * @param {用户名} username 
 * @param {密码} password 
 * 
 */
exports.createUser = async (username, password) => {
    // 查询是否存在该用户
    const isExistUsername = await user.findOne({
        where: {
            username
        }
    });
    if (isExistUsername === null) {
        const ins = await user.create({
            username,
            password: md5(password)
        });
        // 同时创建一条用户信息
        const userId = await exports.findUserId(username);
        await addUserinfo(username, 0,  null,  '','', '', userId.id);
        return ins.toJSON();
    } else {
        return "该用户名已存在";
    }
}

/**
 * 根据用户名查询id
 * @param {用户名} username 
 */
exports.findUserId=async (username)=>{
    const ins = await user.findOne({
        where: {
            username
        }
    });
    return ins.toJSON();
}

/**
 * 登录
 * @param {用户名} username 
 * @param {密码} password 
 * @returns 如果没有登入返回null 
 */
exports.login = async (username, password)=>{
    password=md5(password);
    const ins = await user.findOne({
        where:{
            username,
            password
        }
    })
    if(ins && ins.username === username && ins.password === password){
        return ins.toJSON();
    }
    return null;
}

/**
 * 删除用户
 * @param {用户id} id 
 * @returns 返回受影响行数 
 */
exports.deleteUser = async (id)=>{
    const ins = await user.destroy({
        where:{
            id
        }
    })
    return ins;
}